home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DS-CD ROM 2 1993 August
/
DS CD-ROM 2.Ausgabe (August 1993).iso
/
programm
/
ds0257
/
readme.exe
/
LIB4A86.PRT
< prev
Wrap
Text File
|
1992-02-16
|
42KB
|
1,381 lines
Lib4A86 V1.20
Release 01.03.1992
Eine Sammlung von Routinen für den Assembler A86
(c) Copyright by
Bernd Schemmer
Ondrup 117
4710 Lüdinghausen 2
Copyright (c) 1990 - 1992 by B. Schemmer
────────────────────────────────────────────────────────────────────────────────
Dokumentation für Lib4A86 Seite 1
Inhalt Seite
────────────────────────────────────────────────────────────
Beschreibung ............................................ 2
Benutzung der Sammlung .................................. 5
Weitergabe von Lib4A86 .................................. 6
Vertriebsbedingungen für Händler und Mailboxen .......... 7
Gewährleistung .......................................... 8
Garantieausschlußerklärung .............................. 8
Inhalt der Dateien ...................................... 9
Inhalt der Datei LIB.EXE und der Datei DOC.EXE .......... 9
Interna der .LIB, .MAB und .BIB-Dateien ................. 12
Der Unterschied zwischen .LIB-, .MAB und .BIB-Dateien ... 12
Inhalt der Datei DEMO.EXE ............................... 13
Inhalt der Datei UTIL.EXE ............................... 15
Inhalt der Datei INC.EXE ................................ 15
Einschränkungen der Routinen ............................ 15
Arbeiten mit den Routinen ............................... 17
Copyright ............................................... 20
Bestellformular für die Vollversion ..................... 20
────────────────────────────────────────────────────────────────────────────────
Inhalts-Verzeichnis I 1
Beschreibung
────────────
Lib4A86 ist eine umfangreiche Sammlung von mir erstellter Routinen
und Macros für den Assembler A86 (über 290 Routinen und Macros).
Zusätzlich beinhaltet Lib4A86 auch mehrere Utilities für die Arbeit
mit dem A86.
Lib4A86 ist vor allen für Programmierer mit mindestens zur Program-
mierung von kleineren Programmen oder Routinen ausreichenden Kennt-
nissen in der Assembler-Programmierung gedacht.
Die Sammlung enthält im Moment u.a. folgende Routinen:
- Routinen zur Bearbeitung des globalen und lokalen Environments
und des Environments des aufrufenden Prozesses. (Lesen, Erstellen
oder Ändern von Environmentvariablen)
- Routinen zur Bearbeitung der Parameter eines Programms
- Routinen zur Ausführung von Programmen
- Routinen zur Ein-/Ausgabe von Zeichen und Zeichenketten über DOS
(über die 'alten' Funktionen und über die 'neuen' Funktionen)
- Routinen zur Bearbeitung von Directorys und Disketten bzw. Fest-
platten (z.B. ExistDir, MakeDir, RemoveDir, ChangeDir, etc.)
- Routinen zur Bearbeitung von Dateien
(z.B. Kopieren, Löschen, Umbenennen, Datum und Zeit setzen/lesen,
Attribute lesen/setzen, Bearbeitung von Dateigruppen, etc.)
- Routinen zum gepufferten Lesen und Schreiben von (sequentiellen)
Textdateien
- Routinen zum gepufferten Bearbeiten von Record-Dateien mit wahl-
freiem Zugriff
- Routinen zur Konvertierung von Werten in Zeichenketten
(in allen Formaten mit einer Basis zwischen 2 und 15, z.B. im
binären, octalen, dezimalen oder hexadezimalen Format)
- Routinen zur Konvertierung von Zeichenketten in Werten
(in allen Formaten mit einer Basis zwischen 2 und 15, z.B. im
binären, octalen, dezimalen oder hexadezimalen Format)
- Routinen zur Druckersteuerung
- Routinen zur Nutzung der DOS-Speicherverwaltung
────────────────────────────────────────────────────────────────────────────────
Dokumentation für Lib4A86 Seite 2
- Routinen zur Verwaltung von BasedHeaps
- Routinen zur Bearbeitung von Strings
- Routinen zur Bearbeitung von (FAR-)Adressen
- Routinen zur Bearbeitung von Long-Integer-Werten (32 Bit)
- Routinen zur Bearbeitung von Mengen
- Routinen zur Verwaltung von stream- und meldungs-orientierten
Queuen
- Routinen zur Verwaltung von meldungs-orientierten Stacks
- Routinen zur Bearbeitung von Datum und Zeit
- Routinen zur Nutzung des CLOCK$-Devices
- Routinen zur Kommunikation mit dem Druckerspooler PRINT
- Routinen zur Kommunikation mit dem DOS-Util ASSIGN.COM
- Ein Handler für den Interrupt 24h zum Abfangen von Hardware-
Fehlern
Die Sammlung enthält im Moment u.a. folgende Macros:
- Macros zur Tastatur-Verwaltung über den Interrupt 16h
- Macros und Definititionen zur Nutzung der undokumentierten DOS-
Features
- Macros und Definitionen zur Nutzung der STACKS-Verwaltung von DOS
- Macros und Definitionen zur Bearbeitung von Disketten/Plattten
auf Lowlevel-Ebene
────────────────────────────────────────────────────────────────────────────────
Dokumentation für Lib4A86 Seite 3
Utilities in der aktuellen Version sind:
MAKEDOC.COM
MAKEDOC dient zum Erstellen der Dokumentation eines Assembler-
Quelltextes durch Extrahieren von bestimmten Programm- und
Kommentarteilen aus dem Quelltexten.
MAKELIB.COM
MAKELIB ermöglicht die Erstellung einer Speicherplatz sparenden
Version von Assembler-Quelltexten als Quelltext-Libary für den
A86.
Für die Zukunft ist die fortlaufende Erweiterung der Sammlung
Lib4A86 um neue Routinen und Utilities geplant.
Die Systemvorraussetzungen zur Nutzung von Lib4A86 sind minimal:
IBM-PC/XT/AT/386 mit Festplatte
Betriebssystem MS-DOS oder PC-DOS Version 3.0 oder höher
und der Assembler A86 V3.22 oder höher
(Die Shareware-Version genügt, der A86 ist nicht im Lieferumfang
enthalten.)
────────────────────────────────────────────────────────────────────────────────
Dokumentation für Lib4A86 Seite 4
Benutzung der Sammlung
──────────────────────
Die Sammlung Lib4A86 wird als Shareware vertrieben. Dies gewähr-
leistet, daß Sie die Routinen erst ausgiebig testen können bevor
Sie die Vollversion erwerben.
Sie dürfen deshalb die Routinen in Programmen für den eigenen
Bedarf 4 Wochen lang testen.
Falls Sie Lib4A86 nach dieser Testphase weiter benutzen wollen, oder
falls Sie Programme, die unter Zuhilfename einer oder mehrerer
Utils, Routinen, Macros oder Definitionen aus Lib4A86 erstellt
wurden, vertreiben wollen (sei es nun als Public-Domain, Shareware
oder kommerziell), müssen Sie die Vollversion erwerben.
Die Vollversion kostet 50,- DM und beinhaltet zusätzlich:
- die kommentierten (!) Quelltexte aller Routinen und Macros in der
neuesten Version
- die Möglichkeit zum kostengünstigen Bezug von Updates
und
- das Recht, die Lib4A86 beliebig in Programmen die Sie vertreiben
wollen zu nutzen (OHNE weitere Lizenzgebühren o.ä.)
Die einzigen Bedingungen für die Nutzung der Vollversion von
Lib4A86 in eigenen Programmen sind:
1. im übersetztem Programm (also in der '.COM' bzw. '.EXE'-Datei)
muß im Klartext die Meldung
'Lib4A86 (c) B. SCHEMMER '
erscheinen und
2. in der Dokumentation zu den Programm muß ein Hinweis auf die
Verwendung von Lib4A86 (incl. des Namens des Autors von Lib4A86
erscheinen)
Der Punkt (1) wird schon von den Routinen gewährleistet, für den
Punkt (2) ist der/die Programmierer/in verantwortlich.
────────────────────────────────────────────────────────────────────────────────
Dokumentation für Lib4A86 Seite 5
Bedenken Sie bitte, daß ich eine Menge Arbeit und Zeit in die
Routinen gesteckt habe! Seien Sie fair und unterstützen Sie das
Shareware-Konzept! Nur so werden ich und andere Shareware-Autoren
in Zukunft in der Lage und willens sein, auch weitere Software als
Shareware zu vertreiben.
Weitergabe von Lib4A86
──────────────────────
Die Shareware-Diskette darf beliebig weitergegeben werden, solange
keine Datei entfernt, geändert oder umbenannt wird, keine Datei
ohne Genehmigung des Autors hinzugefügt wird und keinerlei Gebühren
o.ä. dafür genommen werden.
Die Vollversion darf, mit Ausnahme der Datei INC.EXE, ebenfalls be-
liebig - mit den o.a. Einschränkungen - weitergegeben werden.
────────────────────────────────────────────────────────────────────────────────
Dokumentation für Lib4A86 Seite 6
Vertriebsbedingungen für Händler und Mailboxen
──────────────────────────────────────────────
Händler dürfen die Shareware-Version von Lib4A86 vertreiben, solange
folgende Punkte eingehalten werden:
Es dürfen keine Dateien auf der Diskette geändert oder gelöscht
werden. D.h. *ALLE* in der Datei README.DOC bzw. in den .LST-Dateien
aufgelisteten Dateien müssen in unveränderter Form vorhanden sein.
Außer kleineren Info- oder Werbedateien dürfen ohne Absprache mit
dem Autor keine weiteren Dateien auf die Diskette kopiert werden.
Es darf immer nur die neueste Version von Lib4A86 vertrieben werden.
Händler, die Lib4A86 vertreiben wollen, sollten sich daher auf meine
Mailing-Liste für Update-Versionen setzen lassen.
Der Bezug der Updates von Lib4A86 kann auch über die DS (Deutsche
Shareware) erfolgen.
Für den Vertrieb der Shareware-Version von Lib4A86 darf eine Gebühr
von bis zu 20,- DM verlangt werden, solange sichergestellt ist,
daß der Käufer weiß, daß es sich hierbei um Gebühren des Vertriebs
und NICHT um den Preis von Lib4A86 handelt.
Der Katalog-Eintrag für Lib4A86 muß immer auch den Namen des Autors
- Bernd Schemmer - enthalten.
Zudem muß aus dem Katalog klar ersichtlich sein, daß es sich um eine
Shareware-Version handelt.
Die Begriffe Public Domain, Freie Software oder Freeware dürfen mit
Bezug auf Lib4A86 weder schriftlich noch mündlich verwendet werden.
Für die Katalog-Einträge sollte die Datei Lib4A86.TXT bzw. ein
Auszug aus dieser verwendet werden.
Für den Vertrieb von Lib4A86 über Mailboxen gelten ebenfalls die
obigen Bedingungen. Das Packen ALLER Dateien auf der Diskette in ein
neues Archiv ist für den Vertrieb über Mailboxen gestattet.
Ich behalte mir vor, Vertrieben oder Mailboxen, die gegen diese
Bedingungen verstoßen, den Vertrieb von Lib4A86 zu untersagen.
────────────────────────────────────────────────────────────────────────────────
Dokumentation für Lib4A86 Seite 7
Gewährleistung
──────────────
Alle Routinen, Macros und Utils wurden von mir ausgiebig getestet
und laufen in von mir erstellten Programmen fehlerfrei. Allerdings
kann ich natürlich nicht dafür garantieren, daß die Routinen voll-
ständig fehlerfrei sind.
(Bitte unbedingt den Punkt 'Einschränkungen ...' beachten!)
Für eventuell durch die Benutzung von Lib4A86 entstehende Schäden
und Datenverluste übernehme ich deshalb keinerlei Verantwortung!
Falls Sie Fehler in der Sammlung finden, wäre ich Ihnen über eine
Mitteilung hierüber dankbar.
Und das Ganze nochmal in Juristen-Deutsch ...
Garantieausschlußerklärung
──────────────────────────
Garantieausschlußerklärung für Lib4A86 und die zugehörigen Utils und
Textdateien mit der Dokumentation, im weiteren 'diese Software'
genannt, von Bernd Schemmer, im weiteren 'der Autor' genannt:
Der Autor gibt keine Garantien irgendeiner Art, weder ausdrücklich
noch implizit, einschliesslich unbegrenzt aller Garantien der Ver-
wendbarkeit und/oder Nichtverwendbarkeit für irgendeinen Zweck. Der
Autor übernimmt keine Verpflichtungen für den Gebrauchswert dieser
Software über den Kaufpreis dieser Software hinaus. Unter keinen
Umständen ist der Autor haftbar für jedwede Folgeschäden, ein-
schliesslich aller entgangenen Gewinne und Vermögensverluste, oder
anderer mittelbarer und unmittelbarer Schäden, die durch den
Gebrauch oder die Nichtverwendbarkeit dieser Software und ihrer
begleitenden Dokumentation entstehen. Dies gilt auch dann, wenn der
Autor über die Möglichkeit solcher Schäden unterrichtet war oder
ist.
────────────────────────────────────────────────────────────────────────────────
Dokumentation für Lib4A86 Seite 8
Inhalt der Dateien
──────────────────
Inhalt der Datei LIB.EXE und der Datei DOC.EXE
──────────────────────────────────────────────
Im Archiv LIB.EXE befinden sich die Quelltexte der Routinen und der
Macros.
Die Routinen sind jeweils in einzelne Bereiche eingeteilt, und alle
Routinen eines Bereiches sind in einer .LIB-, .BIB- oder .MAB-Datei
zusammengefaßt. (z.B. in der Datei ENV.LIB befinden sich in alle
Routinen zur Bearbeitung des Environments).
Die Endungen der Dateien stehen dabei für die Art der Datei:
.LIB - Routinen und Macros,die unabhängig von allen anderen .LIB-,
.MAB- und .BIB-Dateien benutzt werden können.
.BIB - Routinen, die auf die Routinen aus den .LIB-Dateien auf-
setzen. Zusätzlich werden von manchen .BIB-Dateien auch
eine oder mehrere .MAB-Dateien benötigt. Dies ist jeweils
in der Dokumentation vermerkt.
.MAB - Diese Dateien enthalten nur Macros und EQUs. Im Gegensatz
zu den .LIB-/.BIB-Dateien müssen diese Dateien normaler-
weise (s. Arbeiten ...) bei der Compilierung mit angegeben
werden - falls die dort deklarierten Macros in einem Pro-
gramm benutzt werden sollen
Zusätzlich befindet sich im Archiv LIB.EXE die Datei A86.LIB.
Dies ist die vom Assembler A86 benutzbare Libary-File in der alle
von den anderen .LIB- bzw. .BIB-Dateien zur Verfügung gestellten
Routinen und Variablen verzeichnet sind (aber keine Macros).
Diese Datei muß immer im gleichem Directory wie die .LIB/.BIB-
Dateien sein, da der Pfad der .LIB/.BIB-Dateien nicht darin gespei-
chert ist. (siehe auch die Dokumentation zum A86)
Als registrierter Benutzer des A86 können Sie sich natürlich auch
eine eigene Datei A86.LIB erstellen.
Zusätzlich befindet sich im Archiv LIB.EXE noch die Datei MACROS.MAC
mit allgemeinen Macros. Diese wird für die Compilierung der Demos
benötigt (s.u.); für die Benutzung von Lib4A86 ist diese Datei NICHT
nötig.
────────────────────────────────────────────────────────────────────────────────
Dokumentation für Lib4A86 Seite 9
Zu jeder .LIB-, .BIB- und .MAB-Datei existiert eine .DOC-Datei mit
gleichem Namen im Archiv DOC.EXE. In dieser stehen jeweils alle
Informationen die für den Einsatz der Routinen und Macros in eigenen
Programmen nötig sind. Ich verzichte deshalb hier auf eine weitere
Anführung der Routinen bzw. Macros und deren Beschreibung.
Hinweis: Lassen Sie sich bitte nicht von der Angabe '.. XXX.INC'
bzw. '.. XXX.MAC' in den Headern der .DOC-Dateien stören.
Die .INC- bzw. .MAC-Dateien sind die Quelldateien, aus
denen die .DOC- und die .LIB- bzw .MAB-Dateien erstellt
wurden.
Die .DOC-Dateien sind nicht seitenweise formatiert.
Für alle .LIB-, .MAB- bzw. .BIB-Dateien (mit Ausnahme der Datei
A86.LIB gilt) folgendes:
In jeder .LIB-, .MAB- bzw. .BIB-Datei befindet sich jeweils NUR der
unformatierte Quelltext ohne jeden Kommentar. Die Quelltexte mit den
Kommentaren sind nur in der Vollversion vorhanden (s.o.).
Diese Einschränkung ist aber für die Benutzung der Routinen/Macros
völlig unerheblich!
Im Normalfall, falls also keine Änderung an den Routinen oder Macros
vorgenommen werden sollen, ergibt sich daraus sogar der Vorteil,
daß die Routinen so deutlich weniger Platz belegen (nur ca. 25% der
kommentierten Quelltexte!) und deshalb vom A86 auch schneller über-
setzt werden können.
Die Dokumentation in den .DOC-Dateien enthält folgende Daten:
- der Name, die Größe, der Inhalt und die Bedeutung von Variablen
die von anderen Routinen gelesen und/oder verändert werden dürfen
- der Name, die Größe, der Inhalt und die Bedeutung von Strukturen
die von anderen Routinen benutzt werden können.
- der Name, der Inhalt und die Bedeutung von Konstanten die in den
Routinen deklariert sind
- der Name, die Funktionen, die Eingabe- und Ausgabe-Parameter und
evtl. die Besonderheiten der Routinen
- der Name, die Funktionen, die Eingabe- und Ausgabe-Parameter,
teilweise der Quelltext und evtl. die Besonderheiten der Macros
────────────────────────────────────────────────────────────────────────────────
Dokumentation für Lib4A86 Seite 10
Für die Syntax der Dokumentation gilt:
Die Register werden jeweils mit den allgemeinen Namen bezeichnet,
das Carry-Flag wird mit 'CF' bezeichnet und das Zeroflag mit 'ZF'.
Falls Variablen als Eingabe- oder Ausgabe-Parameter einer Routine
oder eines Macros benutzt werden, werden die Namen der Variablen in
eckigen Klammern angegeben. Beispiel:
Eingabe: [cs:InputHandle]
bedeutet: Die Variable (cs:)InputHandle ist ein Eingabe-Parameter
der Funktion bzw. des Macros.
Das Gleichheitszeichen '=' bedeutet 'enthält', die Zeichenkombina-
tion '->' bedeutet 'zeigt auf' und die Zeichenkombination '->>'
bedeutet 'bedeutet'.
Beispiele:
AL = Nummer des Parameters
bedeutet: Das Register AL enthält die Nummer des Parameters
DS:SI -> Adresse
bedeutet: Der Inhalt der Register-Kombination DS:SI ist die
Adresse (DS = Segment, SI = Offset) eines Doppelwortes
mit der Adresse
DS:SI = Adresse
bedeutet: Die Register-Kombination DS:SI enthält die Adresse
(DS = Segment, SI = Offset)
CF = 1 ->> Fehler
bedeutet: Falls das Carry-Flag gesetzt ist, ist ein Fehler
aufgetreten
Sinnvollerweise formatieren Sie die .DOC-Dateien für die Ausgabe
und drucken diese dann jeweils auf einem neuen Blatt beginnend aus.
(Vor dem Ausdruck der .DOC-Dateien sollten Sie Ihren Drucker auf
132 Zeichen/Zeile einstellen, siehe Drucker-Handbuch).
Die so erhaltene Loseblatt-Sammlung können Sie dann je nach
Geschmack geordnet in einem Ringordner verwahren.
Dieses Verfahren hat gegenüber einem gedrucktem Handbuch mehrere
Vorteile:
1. Ein Ringordner ist für das Nachschlagen nach Informationen
besser geeignet als ein gedrucktes Handbuch.
2. Falls Sie eine Update-Version von Lib4A86 erwerben oder die
Routinen selbst erweitern bzw. ändern brauchen Sie nur jeweils
die geänderten Seiten neu ausdrucken und können diese dann in
Ihren Ringordner übernehmen.
────────────────────────────────────────────────────────────────────────────────
Dokumentation für Lib4A86 Seite 11
Interna der .LIB, .MAB und .BIB-Dateien
───────────────────────────────────────
In den Routinen werden normalerweise nur lokale Labels für Sprung-
ziele und interne Variablen benutzt, so daß eigentlich keine Kon-
flikte mit den Namen auftreten sollten. (Hinweis: Alle Bezeichner in
den .LIB- und .MAB-Dateien enthalten nur Großbuchstaben.)
Um Speicherplatz zu sparen, sind allerdings viele Funktionen der
.LIB/.BIB-Dateien durch interne Routinen realisiert.
Die Namen von internen Routinen beginnen alle mit der Zeichenfolge
'INTERN_'. Diese Routinen sollten auf keinen Fall von einer Ihrer
Routinen direkt aufgerufen werden!
Da die internen Routinen in den .DOC-Dateien nicht dokumentiert
sind, sollten Sie zur Vermeidung von Namenskonflikten in Ihrem Pro-
gramm(en) KEINE mit der Zeichenkette 'INTERN_' beginnenden Namen
verwenden.
Da die Routinen teilweise regen Gebrauch von den internen Routinen
machen, ist es auch nicht ratsam einzelne Routinen aus einer Datei
heraus zu lösen (zumindest nicht in der Shareware-Version)!
Verschiedene Routinen sind in mehreren Dateien enthalten (z.B. ist
die Routine UPCASE in der Datei ENV.LIB und in der Datei STRINGS.LIB
enthalten). Diese Routinen sind aber so implementiert, daß sie im
compilierten Programm nur einmal enthalten sind - auch wenn sie in
mehreren .LIB- bzw. .BIB-Dateien für das Programm vorkommen.
Der Unterschied zwischen .LIB-, .MAB und .BIB-Dateien
─────────────────────────────────────────────────────
Die Routinen in einer .LIB-Datei und die Macros in einer .MAB-Datei
sind jeweils unahängig von den anderen .LIB- und .MAB-Dateien, wo-
hingegen die .BIB-Dateien jeweils mindestens eine (meistens mehrere)
Routinen aus mindestens einer (ebenfalls meistens mehrerer) der
.LIB-Dateien benötigen und eventuell auch noch Macros aus einer oder
mehrerer der .MAB-Dateien benötigen.
Die benötigten .MAB- und .LIB-Dateien sind jeweils in der Dokumen-
tation zu den .BIB-Dateien angegeben.
────────────────────────────────────────────────────────────────────────────────
Dokumentation für Lib4A86 Seite 12
Inhalt der Datei DEMO.EXE
─────────────────────────
Das Archiv DEMO.EXE enthält zu fast jeder .LIB-, .MAB- bzw. .BIB-
Datei jeweils ein kleines Demo-Programm. Die Demoprogramme liegen
als kommentierter Quelltext vor und müssen noch compiliert werden.
Der Name des Quelltextes eines Demo-Programm ist jeweils der Name
der .LIB-, .MAB- oder .BIB-Datei mit der Erweiterung .DEM.
Die Demo-Programme sind nicht weiter dokumentiert, sie dienen
hauptsächlich zur Demonstration der Nutzung der Routinen. (siehe
Quelltexte der Demos)
Zusätzlich befindet sich in dem Archiv die Datei DEMOS.INC. Diese
Datei und die Datei MACROS.MAC wird für die Compilierung der Demos
benötigt.
Für die Benutzung der Routinen sind diese Dateien aber nicht nötig!
Da die Datei MACROS.MAC für die Compilierung der Demos als ERSTE
Quelldatei angegeben werden muß, haben Sie zwei Möglichkeiten für
die Compilierung der Demos:
1. Sie definieren die Environment-Variable A86 mit dem Pfad und dem
Namen der Datei MACROS.MAC als Inhalt. In diesem Fall compiliert
der A86 automatisch zuerst die Datei MACROS.MAC bei jedem Compi-
liervorgang (siehe Dokumentation zum A86).
2. Oder Sie geben die Datei MACROS.MAC explizit beim Compilieren als
erste Datei an.
Beispiel: Compilieren des Demos ENV.DEM
nach (1): SET A86=C:\A86\LIB\MACROS.MAC
REM Pfad eventuell anpassen!
A86 ENV.DEM DEMOS.INC TO ENV.COM
oder
nach (2): A86 MACROS.MAC ENV.DEM DEMOS.INC TO ENV.COM
In beiden Fällen müssen die .LIB/.BIB-Dateien jeweils über die
Datei A86.LIB für den Assembler A86 erreichbar sein!
Im Archiv DEMO.EXE befindet sich zudem noch die Batch-Datei MKDEMOS
(.BAT). Mit Hilfe dieser können die Demos compiliert werden.
────────────────────────────────────────────────────────────────────────────────
Dokumentation für Lib4A86 Seite 13
Die Batch-Datei MKDEMOS.BAT geht davon aus, daß, falls eine
Environment-Variable mit dem Namen A86 deklariert ist, diese den
Dateinamen MACROS.MAC enthält. Existiert keine Environment-Variable
mit dem Namen A86, so ruft MKDEMOS.BAT den A86 jeweils mit den Para-
metern nach der 2. Möglichkeit auf. Die Datei MACROS.MAC muß in
diesem Fall im gleichen Directory wie die .DEM-Dateien sein.
(siehe auch unter 'Arbeiten mit den Routinen')
Die .MAB-Dateien für die eine .DEM-Datei existiert, müssen für die
Übersetzung dieser Demos im gleichen Directory wie die .DEM-Dateien
sein.
In beiden Fällen müssen die .LIB/.BIB-Dateien jeweils über die
Datei A86.LIB für den Assembler A86 erreichbar sein!
Ist dies nicht der Fall, muß die jeweilige .LIB- .MAB- bzw. .BIB-
Datei bei der Compilierung mit angegeben werden, im Beispiel also:
A86 MACROS.MAC ENV.DEM ENV.LIB DEMOS.INC TO ENV.COM
In diesem Fall kann die Datei MKDEMOS.BAT NICHT für die Compilierung
benutzt werden!
Manche Demos benötigen zur Compilierung zusätzliche .MAB-Dateien.
Dies ist dann im Kopf des Quelltextes der Demos vermerkt. Die Batch-
Datei MKDEMOS.BAT berücksichtigt dies. Sie geht davon aus, daß die
benötigten .MAB-Dateien im gleichen Directory wie die .DEM-Dateien
sind.
Hinweis:
Die Demos benötigen immer nur die .LIB/.BIB-Datei für die sie ge-
schrieben wurden und die Dateien MACROS.MAC und DEMOS.INC, d.h.
sie enthalten teilweise redundanten Code.
Zur Compilierung der Demos müssen die möglichen Schalter für den A86
auf Ihre Voreinstellungen stehen. (Dies ist nur von Bedeutung, falls
Sie eine Environment-Variable A86 mit Schaltern für den A86 dekla-
riert haben.)
────────────────────────────────────────────────────────────────────────────────
Dokumentation für Lib4A86 Seite 14
Inhalt der Datei UTIL.EXE
─────────────────────────
Die Datei UTIL.EXE enthält mehrere Utils incl. der Dokumentation zur
Arbeit mit dem A86.
Im Moment sind dies:
MAKEDOC.COM
MAKEDOC.DOC - Util zum Erstellen der Dokumentation zu einem
Assembler-Quelltext durch Extrahieren bestimmter
Kommentare. (Mit MAKEDOC wurden die Dokumentation
zu den Routinen auf dieser Diskette erstellt.)
MAKELIB.COM
MAKELIB.DOC - Util zur Erstellung einer .LIB-Datei für den A86
aus einem Assembler-Quelltext durch Entfernen
aller überflüssigen Zeichen und Zeilen aus dieser.
(Mit MAKELIB wurden die .LIB-, .MAB und .BIB-
Dateien auf dieser Diskette erstellt.)
Für die genauere Beschreibung der Utils bitte in den entsprechenden
.DOC-Dateien nachschauen. Die .DOC-Dateien aus dem Archiv UTIL.EXE
sind jeweils für den Ausdruck formatiert (max. 80 Zeichen/Zeile und
max. 60 Zeilen/Seite).
Inhalt der Datei INC.EXE
────────────────────────
Das, nur in der Vollversion enthaltene, Archiv INC.EXE enthält zu
jeder .LIB-, .MAB- bzw. .BIB-Datei jeweils die kommentierten und
formatierten Quelltexte. Der Name der Dateien ist dabei identisch
mit dem Namen der .LIB, .MAB- bzw. .BIB-Dateien und die Erweiterung
der Dateien ist .INC (bzw. .MAC bei den .MAB-Dateien).
Einschränkungen der Routinen
────────────────────────────
Die Routinen wurden speziell für den A86 (Version 3.22, die meisten
Routinen dürften aber auch mit älteren Versionen nutzbar sein)
geschrieben.
Die Nutzung dieser für andere Assembler ist ohne größere Änderungen
im Quelltext nicht möglich, da in den Routinen ausgiebig von den
speziellen Features des A86 gebrauch gemacht wird.
────────────────────────────────────────────────────────────────────────────────
Dokumentation für Lib4A86 Seite 15
Ich halte es da mit Eric Isaacson, dem Autor vom A86:
Wer einmal mit dem A86 gearbeitet hat, wird andere Assembler nur
noch für spezielle Notfälle benutzen.
Bitte bedenken Sie, daß Sie bei bei Nutzung des A86 auch von
diesem die Vollversion erwerben müssen!
Aus eigener Erfahrung kann ich auch hier nur Positives vermerken.
(Die Vollversion bekam ich ohne Probleme ca. 1 1/2 Wochen nach der
Bestellung direkt aus den USA)
Für die Nutzung der Routinen mit anderen Assemblern oder auch
anderen Programmiersprachen, bietet sich nur die Übersetzung der
Routinen in .OBJ-Dateien an, die dann über ein noch zu schreibendes
Interface zum Hauptprogramm hinzugelinkt werden können.
Alle Routinen wurden für .COM-Programme geschrieben, d.h. das sie
keinerlei Segment-Anweisungen enthalten und alle internen Daten
direkt im Code-Segment liegen.(Die von den Routinen zu bearbeitenden
Daten können allerdings überall im Speicher liegen.) Dies ist vor
allem bei Macros, die interne Routinen-Daten lesen oder verändern zu
beachten!
Alle Routinen sind als NEAR-Routinen codiert, PROC-, ENDP- oder
SEGMENT-Anweisungen wurden nicht verwendet.
Die Routinen sind i.a. nicht wieder-eintrittsfähig.
Die Routinen zur Dateibearbeitung sind nicht netzwerkfähig.
Falls es nicht explizit in der Dokumentation der Routinen angegeben
ist, verwenden die Routinen keine undokumentierten Features.
Alle Routinen benutzen das Register AX als Arbeitsregister (falls
nichts anderes angegeben ist) und verändern außer diesem und dem
Flagregister keine Register, die nicht zur Rückgabe von Ergebnissen
benötigt werden.
Alle Routinen, die mit Strings arbeiten, erwarten einen String im
Pascal-Format (d.h. mit einem führendem Längenbyte). Daraus ergibt
sich eine max. Stringlänge von 255 Zeichen.
────────────────────────────────────────────────────────────────────────────────
Dokumentation für Lib4A86 Seite 16
Das letzte Zeichen eines Strings, der für die Dircectory- oder
Dateibearbeitung benötigt wird (z.B. ein Dateiname) darf nicht am
Offset FFFFh stehen, da das Byte hinter dem String temporär von den
Routinen benutzt wird. (kommt im Normalfall auch nicht vor)
Alle Zahlenwerte in den Routinen sind mit einer expliziten Angabe
des Zahlensystems versehen, so daß das voreingestellte Zahlensystem
für die Compilierung egal ist.
Alle Routinen, bei denen nicht explizit etwas anderes vermerkt ist,
belegen nur minimalen Platz (für die Sicherung der Register) auf dem
Stack.
Die Routinen die DOS-Funktionen oder Strukturen nutzen (z.B. zur
Datei- und Directory-Behandlung, zum Bearbeiten von Textdateien,
zur Ausführung von Programmen oder zur Environment-Behandlung)
benötigen eine DOS-Version ab 3.0. Manche Routinen oder Macros
benötigen auch eine DOS-Version ab 3.3, 4.0 oder 5.0. Dies ist dann
in der Dokumentation der Routinen angegeben.
Die DOS-Version muß IMMER von den aufrufenden Routinen überprüft
werden.
Arbeiten mit den Routinen
─────────────────────────
Zur effizienten Nutzung von Lib4A86 sollte folgendermaßen vorge-
gangen werden:
Richten Sie auf Ihrer Festplatte ein eigenes Directory für die
Routinen ein und kopieren Sie dorthin alle .LIB-, .BIB- und .MAB-
Dateien. (auch die Datei A86.LIB - z.B. ins Directory C:\A86\LIB)
Vermerken Sie den Namen dieses Directorys in der Environmentvariable
A86LIB. (z.B. durch SET A86LIB=C:\A86\LIB\)
Nun können Sie alle Routinen aus den Dateien beliebig in Ihren Pro-
grammen für den A86 verwenden, da dieser diese über die Envrionment-
Variable A86LIB und die Datei A86.LIB im Directory mit den Routinen
jederzeit findet. (siehe auch Dokumentation zum A86)
Hinweis:
Sinnvollerweise machen Sie die Zuordnung der Environment-Variable
A86LIB schon in der AUTOEXEC-Datei.
────────────────────────────────────────────────────────────────────────────────
Dokumentation für Lib4A86 Seite 17
Im Gegensatz zu den Routinen müssen Macros und Definitionen vor der
Benutzung definiert sein.
Für diesen Fall wurde die (EQU-)Konstante Lib4A86 implementiert.
Mit dieser Variable hat es folgende Bewandnis:
Falls die Konstante Lib4A86 vor der Compilierung einer .LIB- oder
.BIB-Datei definiert ist, wird in der ersten der zu compilierenden
.LIB- bzw. .BIB-Datei (und NUR in dieser!) als erste Anweisung der
Befehl 'JMP START' eingefügt. Ist die Konstante Lib4A86 nicht defi-
niert, so wird der Befehl nicht eingefügt.
Der Zweck dieser Vorgehensweise läßt sich am einfachsten an einem
Beispiel verdeutlichen:
Angenommen Sie möchten die Datei TEST.A86 compilieren, wobei in der
Datei TEST.A86 die Macros und EQUs aus den Dateien STRINGS.LIB und
ENV.LIB benötigt werden.
Normalerweise müssten Sie hierfür den A86 folgendermaßen aufrufen:
A86 TESTBEG.A86 d:STRINGS.LIB d:ENV.LIB TEST.A86 TO TEST.COM
wobei in der Datei TESTBEG.A86 nur der Befehl 'JMP START' enthalten
sein müsste und das eigentliche Programm am Label START in der Datei
TEST.A86 beginnt. ('d:' ist hier der Pfad der Datei STRINGS.LIB; der
JMP-Befehl ist nötig, damit die Routinen und Daten aus den Dateien
STRINGS.LIB und ENV.LIB übersprungen werden.)
Durch das Definieren der Konstante Lib4A86 in der Aufrufzeile für
den A86 läßt sich dies nun vereinfachen:
A86 =Lib4A86 d:STRINGS.LIB d:ENV.LIB TEST.A86 TO TEST.COM
Nun wird in der Datei STRINGS.LIB vor allen Daten und Routinen auto-
matisch der Befehl 'JMP START' eingefügt und die Datei TESTBEG.A86
kann entfallen. (Das eigentliche Programm in der Datei TEST.A86 muß
aber immer noch am Label START beginnen!)
Zur weiteren Vereinfachung läßt sich die Konstante Lib4A86 auch
schon in der Environment-Variable A86 definieren:
SET A86=d:MACROS.MAC =Lib4A86
────────────────────────────────────────────────────────────────────────────────
Dokumentation für Lib4A86 Seite 18
Nun vereinfacht sich der Aufruf des A86 zum Compilieren von TEST.A86
zu:
A86 d:STRINGS.LIB d:ENV.LIB TEST.A86 to TEST.COM
Falls die Environment-Variable A86LIB nur einen Pfad (der mit einem
Backslash '\' oder einem Doppelpunkt ':' endet) enthält, kann diese
Variable auch als Pfad für die Dateien STRINGS.LIB und ENV.LIB ange-
geben werden:
A86 %A86LIB%STRINGS.LIB %A86LIB%ENV.LIB TEST.A86 to TEST.COM
Dies vereinfacht den Aufruf vor allem falls Sie mehrere .LIB- bzw.
.BIB-Dateien angegeben müssen und diese in einem verschachtelten
Directory liegen.
Sinnvollerweise machen Sie die Zuordnung der Environment-Variable
A86 schon in der AUTOEXEC-Datei. In diesem Fall wird zwar die Zeile
'JMP START' auch eingefügt, falls die .BIB- bzw. .LIB-Dateien nach
dem Hauptprogramm compiliert werden, dies stört aber nicht. (Die 3
Bytes, die der - dann überflüssige, aber nicht schädliche - Befehl
'JMP START' belegt, sind auch nicht die Welt.)
In diesem Fall muß aber in allen Programmen, die Routinen aus einer
oder mehrerer .LIB- bzw. .BIB-Dateien benötigen, ein Label mit dem
Namen START definiert sein!
Allerdings können Sie die Definition der Konstante Lib4A86 beim
Aufruf des A86 auch für diese eine Compilierung jederzeit mit dem
Parameter '=!Lib4A86' wieder ausschalten. In diesem Fall muß dann
kein Label mit dem Namen START definiert sein.
z.B. A86 =!Lib4A86 OHNELIB.A86 TO OHNELIB.COM
Hinweis:
Die Namen der .MAB-Dateien, die Sie öfter benutzen, können ebenfalls
in der Variable A86 vermerkt werden. Sie werden dann vom A86 bei
jedem Compiliervorgang als erste Dateien übersetzt.
z.B. SET A86=C:\A86\LIB\MACROS.MAC C:\A86\LIB\EXTDOS.MAB
oder SET A86=C:\A86\LIB\*.MA? =Lib4A86
Da in den .MAB-Dateien nur Macros, Strukturen und EQUs definiert
sind, wird hierdurch das Programm nicht länger. Probleme damit kann
es nur geben, falls Sie in Ihrem Programm soviele Macros und EQUs
definieren, daß die internen Tabellen des A86 nicht ausreichen.
(sollte aber normalerweise nicht vorkommen)
────────────────────────────────────────────────────────────────────────────────
Dokumentation für Lib4A86 Seite 19
Copyright
─────────
Das Copyright für alle auf der Diskette befindlichen Dateien liegt
bei:
Bernd Schemmer
Ondrup 117
4710 Lüdinghausen 2
Warenamen und eingetragene Warenzeichen werden in der Dokumentation
ohne Gewährleistung einer freien Verwendung benutzt.
Bestellformular für die Vollversion
───────────────────────────────────
Hinweise:
Die angegebenen Preise gelten garantiert nur bis zum 30.06.1992.
Ab diesem Zeitpunkt können Preisänderungen eintreten.
Das Formular bitte mit dem Computer oder der Schreibmaschine aus-
füllen!
Und noch ein Hinweis:
Die Shareware-Version bekommen Sie bei den meisten PD/Shareware-
Vertrieben für eine geringere Gebühr als bei mir!
────────────────────────────────────────────────────────────────────────────────
Dokumentation für Lib4A86 Seite 20
An: Bernd Schemmer
Stichwort: Lib4A86
Ondrup 117
4710 Lüdinghausen 2
│ Menge │ Preis
──────────────────────────────┼───────────┼────────────────────────
Vollversion von Lib4A86 │ │
(neueste Version) á 50,- DM │ _____ │ _____
│ │
Update von ________ auf ______│ _____ │ _____
│ │
Shareware-Version von Lib4A86 │ │
(neueste Version) á 20,- DM │ _____ │ _____
│ │
Versandkosten für die Voll- │ │
version á 6,- DM │ _____ │ _____
│ │
──────────────────────────────┴───────────┼────────────────────────
│
Summe │
╘═════════
Lieferung per Euroscheck (liegt bei) [ ]
Lieferung per Nachnahme [ ] (plus Nachnahme-Kosten)
Disketten-Größe: 5.25"-Disketten mit 360 KB verwendbar [ ]
3.5"-Disketten mit 720 KB nötig [ ]
Lieferung an:
Name: _______________________________________________________
Firma: _______________________________________________________
Straße: _______________________________________________________
PLZ, Ort: _______________________________________________________
Die in der Dokumentation angeführten Bedingungen für die Benutzung
und Weitergabe von Lib4A86 habe ich gelesen und erkenne ich an.
Ort Datum Unterschrift
___________________________ ______________ ________________________
Bitte auch folgende Daten eintragen (freiwillig):
Telefon: _____________________ Erreichbar: _____________________
(Tag und Uhrzeit, z.B. Mo.-Fr. zw. 9 Uhr und 16 Uhr)
Wo haben Sie Lib4A86 kennengelernt? _______________________________
────────────────────────────────────────────────────────────────────────────────
Dokumentation für Lib4A86 Seite 21
────────────────────────────────────────────────────────────────────────────────
Dokumentation für Lib4A86 Seite 22